import { RouteRecord, RouteRecordWithMenuItem } from "./types";
import PageLogin from "@/views/login";
import Page404 from "@/views/exception/404";
import { Navigate } from "react-router-dom";

/**
 *
 * 动态引入多个模块
 *
 * TS 环境中，需要额外安装 @types/webpack-env 包
 */

const modules = require.context("./modules", false, /\.tsx$/);
// console.log(modules, "===", modules.keys()); // 是个函数, 有keys属性
// console.log(modules(modules.keys()[0])); // Module 对象，里面有一个 default 属性
const routeModuleList: RouteRecordWithMenuItem[] = [];
modules.keys().forEach((key) => {
  // console.log(modules(key).default);
  const mod = modules(key).default;
  const modList = Array.isArray(mod) ? [...mod] : [mod];
  routeModuleList.push(...modList);
});

/**
 * 常量路由，不需要权限控制的，比如 登录 404 等页面。
 */
export const constantRoutes: RouteRecord[] = [
  {
    path: "/login",
    element: <PageLogin />,
  },
  // / -> /dashboard/analysis
  {
    path: "/",
    element: <Navigate to="/dashboard/analysis" />,
  },
  {
    path: "*",
    element: <Page404 />,
  },
];

/**
 * 动态路由，需要控制权限的，与左侧菜单渲染有关的
 */
export const asyncRoutes: RouteRecordWithMenuItem[] = [...routeModuleList];

/**
 * 给 useRoutes 使用
 */
export const routes = [...constantRoutes, ...asyncRoutes];
